// !ES6提供的新的数据结构 Map
// !类似于对象,也是键值对的集合,但是键的范围不包括字符串,合作类型的值包括对象都可以当做键
// !集合实现了iterator接口,
// !可以使用扩展运算符和for...of进行遍历

// 声明一个set
let o = new Map();

// 添加元素
o.set('name', 'luck');
o.set('change', function () {
  console.log('我们可以改变你');
})
console.log(o, typeof o); //Map(2) {size: 2, name => luck, change => ƒ ()} object

let key = {
  color: 'red'
}
o.set(key, ['北京', '上海']);
console.log(o); //Map(3) {size: 3, name => luck, change => ƒ (), {color: 'red'} => (2) ['北京', '上海', …]}

// 元素个数
console.log(o.size); //3

// 删除元素
o.delete('name');
console.log(o); //Map(2) {size: 2, change => ƒ (), {color: 'red'} => (2) ['北京', '上海', …]}

// 读取
console.log(o.get('change')); //ƒ () {console.log('我们可以改变你');}

// 清空
// o.clear();
// console.log(o); //Map(0) {size: 0}

// 遍历
for (const item of o) {
  //['change', ƒ] ƒ () {\r\n  console.log('我们可以改变你');\r\n}
  //['北京', '上海']
  console.log(item);
}